home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / BST_SystemDocs.lha / BeastV1 / Templates / Asm / BST_EmptyClass.s < prev   
Encoding:
Text File  |  1996-04-10  |  7.8 KB  |  427 lines

  1. ;****h* Beast/BST_EmptyClass **************************************************
  2. ;*
  3. ;*    NAME
  4. ;*      BST_EmptyClass -- (V1 Bravo)
  5. ;*
  6. ;*    COPYRIGHT
  7. ;*      Maverick Software Development
  8. ;*
  9. ;*    FUNCTION
  10. ;*
  11. ;*    SUPERCLASS
  12. ;*
  13. ;*    BEAST ATTRIBUTES
  14. ;*
  15. ;*    NEW ATTRIBUTES
  16. ;*
  17. ;*    BEAST METHODS
  18. ;*
  19. ;*    NEW METHODS
  20. ;*
  21. ;*    AUTHOR
  22. ;*      Jacco van Weert
  23. ;*
  24. ;*    CREATION DATE
  25. ;*      4-Apr-95
  26. ;*
  27. ;*    MODIFICATION HISTORY
  28. ;*
  29. ;*    NOTES
  30. ;*
  31. ;****************************************************************************
  32.  
  33.  
  34.     include    exec/types.i
  35.     include    exec/nodes.i
  36.     include    exec/lists.i
  37.     include    exec/libraries.i
  38.     include    exec/resident.i
  39.     include exec/tasks.i
  40.     INCLUDE    exec/exec_lib.i
  41.     INCLUDE    exec/execbase.i
  42.     INCLUDE    exec/initializers.i
  43.     INCLUDE    exec/interrupts.i
  44.     INCLUDE    exec/memory.i
  45.     INCLUDE    exec/ports.i
  46.     INCLUDE    libraries/dos.i
  47.  
  48.     INCLUDE    "Beast:Include/BST_System/Beast.i"
  49.     INCLUDE    "Beast:Include/BST_System/Beast_lib.i"
  50.  
  51.  
  52. ;****** BST_EmptyClass/BST_EmptyInstance *********************************
  53. ;*
  54. ;*    NAME
  55. ;*      BST_EmptyInstance -
  56. ;*
  57. ;*************************************************************************
  58.             rsreset
  59.             include    "Beast:Instances/BST_System/Asm/BST_EmptyClass.instance"
  60. BST_EmptyInstanceSIZE:    rs.w    0
  61.  
  62.  
  63. ;        ***********************************
  64. ;        **** definition of the library base
  65.         rsreset
  66. ClassLib    rs.b    $22
  67. cl_SysLib    rs.l    1
  68. cl_DosLib    rs.l    1
  69. cl_SegList    rs.l    1
  70. cl_Flags    rs.b    1
  71. cl_pad        rs.b    1
  72. Class_Sizeof    rs.l    0
  73.  
  74. MYPRI         equ    0
  75. VERSION        equ    1
  76. REVISION    equ    1
  77.  
  78. libname    macro
  79.     dc.b    'BST_EmptyClass'
  80.     dc.b    '\<VERSION>','.','\<REVISION>'
  81.     dc.b    ' (1 Apr 1996)',$0d,$0a,0
  82.     endm
  83.  
  84. Start:
  85.     moveq    #0,d0
  86.     rts
  87.  
  88. initDDescript
  89.     dc.w    RTC_MATCHWORD
  90.     dc.l    initDDescript
  91.     dc.l    EndCode
  92.     dc.b    RTF_AUTOINIT
  93.     dc.b    VERSION
  94.     dc.b    NT_LIBRARY
  95.     dc.b    MYPRI
  96.     dc.l    ClassName
  97.     dc.l    idString
  98.     dc.l    Init
  99.  
  100. ClassName    dc.b    'BST_EmptyClass',0
  101.         even
  102. idString     libname
  103.         even
  104. dosName        DOSNAME
  105.         even
  106. Init
  107.     dc.l    Class_Sizeof
  108.     dc.l    funcTable
  109.     dc.l    dataTable
  110.     dc.l    initRoutine
  111.  
  112. funcTable
  113. ;            Standard functions
  114.     dc.l    Open
  115.     dc.l    Close
  116.     dc.l    Expunge
  117.     dc.l    Null
  118. ;            Library Functions
  119.  
  120. ;            End of Functions
  121.     dc.l    -1
  122.  
  123. dataTable
  124.     INITBYTE LH_TYPE,NT_LIBRARY
  125.     INITLONG LN_NAME,ClassName
  126.     INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  127.     INITWORD LIB_VERSION,VERSION
  128.     INITWORD LIB_REVISION,REVISION
  129.     INITLONG LIB_IDSTRING,idString
  130.     dc.l        0
  131.  
  132.  
  133. ;########################################
  134. ;####################### INIT ###########
  135. initRoutine
  136.     move.l    a5,-(sp)
  137.     move.l    d0,a5
  138.  
  139.     move.l    a6,cl_SysLib(a5)
  140.     move.l    a0,cl_SegList(a5)
  141.  
  142.     bsr    Init_Class
  143.  
  144.     move.l    a5,d0
  145.     move.l    (sp)+,a5
  146.     rts
  147.  
  148. ;####################################
  149. ;#################### OPEN ##########
  150. Open:
  151.     addq.w    #1,LIB_OPENCNT(a6)
  152.     bclr    #LIBB_DELEXP,cl_Flags(a6)
  153.     move.l    a6,d0
  154.     rts
  155.  
  156. ;#####################################
  157. ;################ CLOSE ##############
  158. Close:    moveq    #0,d0
  159.     subq.w    #1,LIB_OPENCNT(a6)
  160.     bne.s    .ll1
  161.  
  162. ;    **** Disabled for debugging only
  163.  
  164. ;    btst    #LIBB_DELEXP,cl_Flags(a6)
  165. ;    beq.s    .ll1
  166.  
  167.     bsr    Expunge
  168. .ll1    rts
  169.  
  170. ;###################################
  171. ;############### EXPUNGE ###########
  172. Expunge:
  173.     movem.l    d2/a5/a6,-(sp)
  174.     move.l    a6,a5
  175.     move.l    cl_SysLib(a5),a6
  176. ;            -- See of any-one has us open
  177.     tst.w    LIB_OPENCNT(a5)
  178.     beq.s    .ll1
  179. ;            -- We're still open. Set the delayed expunge flag
  180.     bset    #LIBB_DELEXP,cl_Flags(a5)
  181.     moveq    #0,d0
  182.     bra.s    Expunge_End
  183. ;                    Go ahead get rid of us.
  184. .ll1:
  185.     move.l     cl_SegList(a5),d2
  186.     move.l     a5,a1            Unlink us from the library list
  187.     CALLEXEC Remove
  188.  
  189. ;    move.l     cl_DosLib(a5),a1    Close all other things
  190. ;    CALLEXEC CloseLibrary
  191. ;
  192. ; Close here the things you opened in the init routine.
  193. ;
  194.     bsr     Exit_Class
  195.  
  196.     moveq     #0,d0            Free our memory
  197.     move.l     a5,a1
  198.     move.w     LIB_NEGSIZE(a5),d0
  199.     sub.l     d0,a1
  200.     add.w     LIB_POSSIZE(a5),d0
  201.     CALLEXEC FreeMem
  202.  
  203.     move.l    d2,d0
  204. Expunge_End:
  205.     movem.l    (sp)+,d2/a5/a6
  206.     rts
  207.  
  208. ;#################################
  209. ;#################################
  210. Null            ; The fourth standard function, see ref. manual.
  211.     moveq    #0,d0
  212.     rts
  213.  
  214. ;****** BST_EmptyClass/Init_Class [1.0]
  215. ;*
  216. ;*    NAME
  217. ;*      Init_Class -
  218. ;*
  219. ;**********************************
  220. Init_Class:
  221.     PUSHM     d0-d7/a0-a6
  222.     lea     BeastName,a1
  223.     moveq      #0,d0
  224.     CALLEXEC OpenLibrary
  225.     move.l     d0,_BeastBase
  226.  
  227. ;    *********************
  228. ;    **** Create the class
  229.     lea      ClassName,a0
  230.     suba.l      a1,a1
  231.     moveq      #BST_EmptyInstanceSIZE,d0
  232.     CALLBEAST BST_MakeClass
  233.     move.l      d0,a2
  234.     move.l      d0,_ClassBase
  235.     beq.s      .out
  236.  
  237. ;    ******************************
  238. ;    **** Add the class(a2) methods
  239.  
  240.     move.l      a2,a0
  241.     lea      mth_Init,a1        ;* OBM_INIT
  242.     move.l      #OBM_INIT,d0
  243.     CALLBEAST CLSS_AddMethod
  244.  
  245.     move.l      a2,a0
  246.     lea      mth_Dispose,a1    ;* OBM_DISPOSE
  247.     move.l      #OBM_DISPOSE,d0
  248.     CALLBEAST CLSS_AddMethod
  249.  
  250.     move.l      a2,a0
  251.     lea      mth_SetAttr,a1    ;* OBM_SETATTR
  252.     move.l      #OBM_SETATTR,d0
  253.     CALLBEAST CLSS_AddMethod
  254.  
  255.     move.l      a2,a0
  256.     lea      mth_GetAttr,a1    ;* OBM_GETATTR
  257.     move.l      #OBM_GETATTR,d0
  258.     CALLBEAST CLSS_AddMethod
  259.  
  260.     move.l      a2,a0
  261.     CALLBEAST BST_AddClass
  262.  
  263. .out:    POPM      d0-d7/a0-a6
  264.     rts
  265.  
  266. ;****** BST_EmptyClass/Exit_Class [1.0]
  267. ;*
  268. ;*    NAME
  269. ;*      Exit_Class
  270. ;*
  271. ;***********************************
  272. Exit_Class:
  273.     PUSHM      d0-d7/a0-a6
  274.  
  275.     move.l      _ClassBase,a0
  276.     CALLBEAST BST_RemoveClass
  277.     move.l      _ClassBase,a0
  278.     CALLBEAST BST_FreeClass
  279.  
  280. ;    ************************
  281. ;    **** Close the libraries
  282.     move.l      _BeastBase,a1
  283.     CALLEXEC  CloseLibrary
  284.  
  285.     POPM      d0-d7/a0-a6
  286.     rts
  287.  
  288. ;****** BST_EmptyClass/mth_GetAttr ***********************************
  289. ;*
  290. ;*    NAME
  291. ;*      mth_GetAttrMethod - (V1 Bravo)
  292. ;*
  293. ;*    INPUTS
  294. ;*      d3 - MethodFlags
  295. ;*      a2 - Object
  296. ;*      a3 - TagList
  297. ;*
  298. ;*************************************************************************
  299. mth_GetAttr:
  300.     PUSH      a6
  301.     move.l      a3,a0
  302.     lea      ga_SupTags,a1
  303.     CALLBEAST BST_FillAttrTagList
  304.     POP      a6
  305.     rts
  306.  
  307. ;    ************************************************
  308. ;    ****    D4 = Number of this filled item
  309. ;    ****    A0 = Pointer to { TAG, xxxx_data }
  310. ;    ****    A2 = Pointer to the object
  311. ;    ****    A3 = Pointer to the start of the TagList
  312. ;    ****    A5 = Pointer to the Instance
  313.  
  314. ga_title:    move.l    Title(a5),4(a0)
  315.         rts
  316.  
  317. ga_SupTags:    dc.l    BTA_Title,ga_title
  318.         dc.l    TAG_DONE
  319.  
  320. ;****** BST_EmptyClass/SetAttr [1.0] ********
  321. ;*
  322. ;*    NAME
  323. ;*      SetAttr
  324. ;*
  325. ;*    INPUTS
  326. ;*      as a normal method.
  327. ;*
  328. ;********************************************
  329. SetAttr:
  330.     PUSH      a6
  331.     move.l      a3,a0
  332.     lea      sa_SupTags,a1
  333.     CALLBEAST BST_FillAttrTagList
  334.     POP      a6
  335.     rts
  336.  
  337. ;    ************************************************
  338. ;    ****    D4 = Number of this filled item
  339. ;    ****    A0 = Pointer to { TAG, xxxx_data }
  340. ;    ****    A2 = Pointer to the object
  341. ;    ****    A3 = Pointer to the start of the TagList
  342. ;    ****    A5 = Pointer to the Instance
  343.  
  344. sa_title:    move.l    4(a0),Title(a5)
  345.         rts
  346.  
  347. sa_SupTags:    dc.l    BTA_Title,sa_title
  348.         dc.l    TAG_DONE
  349.  
  350.  
  351. ;****** BST_EmptyClass/mth_SetAttr *************************************
  352. ;*
  353. ;*    NAME
  354. ;*      mth_SetAttr - (V1 Bravo)
  355. ;*
  356. ;*    INPUTS
  357. ;*      d3 - MethodFlags
  358. ;*      a2 - Object
  359. ;*      a3 - TagList
  360. ;*
  361. ;*************************************************************************
  362. mth_SetAttr:
  363.     bsr    SetAttr
  364.     rts
  365.  
  366. ;****** BST_EmptyClass/mth_Init ****************************************
  367. ;*
  368. ;*    NAME
  369. ;*      mth_Init - (V1 Bravo)
  370. ;*
  371. ;*    INPUTS
  372. ;*      d3 - MethodFlags
  373. ;*      a2 - Object
  374. ;*      a3 - TagList
  375. ;*
  376. ;*    RESULT
  377. ;*      d0 - New MethodFlags
  378. ;*
  379. ;*************************************************************************
  380. mth_Init:
  381.     bsr    SetAttr
  382.     rts
  383.  
  384. ;****** BST_EmptyClass/mth_Dispose *************************************
  385. ;*
  386. ;*    NAME
  387. ;*      mth_Dispose - (V1 Bravo)
  388. ;*
  389. ;*    INPUTS
  390. ;*      d3 - MethodFlags
  391. ;*      a2 - Object
  392. ;*      a3 - TagList
  393. ;*
  394. ;*    RESULT
  395. ;*      d0 - New MethodFlags
  396. ;*
  397. ;*************************************************************************
  398. mth_Dispose:
  399.     PUSH    a6
  400.  
  401. ;    ************************************************
  402. ;    **** EXAMPLE: to get the pointer to the instance
  403. ;    ****
  404.     Macro_GetInstance a2,a6        ;**** Object = a2, Instance = a6
  405.  
  406.     POP    a6
  407.     move.l    d3,d0
  408.     rts
  409.  
  410.  
  411. EndCode:
  412.  
  413. ;****i* BST_EmptyClass/DataSection ***************************************
  414. ;*
  415. ;*    NAME
  416. ;*      DataSection - (V1 Bravo)
  417. ;*
  418. ;*************************************************************************
  419.     SECTION    DATA
  420.  
  421. BeastName:    BEASTNAME
  422.         even
  423. _BeastBase:    dc.l    0
  424. _ClassBase:    dc.l    0
  425.  
  426.     END
  427.